#ifndef MW_H
#define MW_H
#include "qdatetime.h"
#include <Qsplitter>
#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QToolBar>
#include <QTextEdit>
#include <QStringListModel>
#include <QListView>
#include <QLabel>
#include <QFontComboBox>
#include <QComboBox>
#include <QToolButton>
#include <QTextBrowser>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QElapsedTimer>
class MW : public QMainWindow
{
    Q_OBJECT

public:
    MW(QWidget *parent = 0);
    ~MW();
    QMediaPlayer *p音频播放;
    QWidget *p中心窗体;
    QSplitter *p左分割;
    QSplitter *p主页分割;

    QString m词典文件;
    QString m词典路径;//最后不带 / 号
    QString m表名;
    QString mINI文件;
    QString m词条模板文件;
    QString m任务名;
    QString m当前打开词条;//修改词条时使用
    QString m表格操作保存文档;//用以表格误操作还可以返回
    QElapsedTimer m定时器; // 我们的计时器
    qint64 m记忆时间;

private:
    QTextEdit * p主页Edit;
    //QTextBrowser *p主页Edit;
    QListView *p单词列表;
    QStringListModel *p列表模式单词;
    QStringList m单词序列;

    QListView *p历史列表;
    QStringListModel *p列表模式历史;
    QStringList m历史序列;

private slots:
    void m单词列表点击();
    void m历史列表点击();
    void m搜索点击btn();

    void m打开文档文件();
    void m保存当前文件();

    bool m打开书集文件();
    void m选择书本();
    void m新建书集文件();
    void m增加书本();
    void m添加词条();
    void m修改词条();
    void m删除词条();
    void m删除书本();

    void m任务提交();
    void m任务取消();

    int updateCursorPosition();

    void m插入链接();
    void m插入音频();
    void m插入图片();

    void m插入表格();
    void m表格操作(QString 操作类型);
    void m表格增加一行();
    void m表格增加一列();
    void m表格删除当前行();
    void m表格删除当前列();
    void m表格返回上一步();




public:
    void m创建Menu();
    void m创建Action();
    void m创建ToolBar();
    void m复制模板文件(QString 模板名);
    void m更新词典序列();
    void m更新历史序列(QString 词条ID表名);


protected slots:
    void ShowCurrentFormatChanged(const QTextCharFormat &fmt);//当光标所在处的字符格式发生变化时自动调用此槽函数，显示当前字符的格式。但好像不起作用。
    void mShowFontComboBox(QString comboStr);	//设置字体
    void mergeFormat(QTextCharFormat format);//用来获取光标所选区域，设置各种格式。
    void ShowSizeSpinBox(QString spinValue);	//设置字号
    void ShowBoldBtn();                        //设置文字显示加粗
    void ShowItalicBtn();                      //设置文字显示斜体
    void ShowUnderlineBtn();                   //设置文字加下画线
    void ShowColorBtn();						//设置文字颜色
    void ShowAlignment(QAction *act);  //行的对齐方式
    void ShowCursorPositionChanged();//响应文本中光标位置处发生改变
    void ShowList(int index);//文本列表项

private:
    QMenu *fileMenu;                           		//各项菜单栏
    QMenu *zoomMenu;
    QMenu *p书集菜单;
    QMenu *p插入资源;
    QMenu *p表格菜单;
    QMenu *p其它菜单;
    QMenu *rotateMenu;//旋转
    QMenu *mirrorMenu;

    QAction *openFileAction;                     	//文件菜单项
    QAction *NewFileAction;
    QAction *fileSave;
    QAction *PrintTextAction;
    QAction *PrintImageAction;
    QAction *exitAction;

    QAction *copyAction;                          	//编辑菜单项
    QAction *cutAction;
    QAction *pasteAction;
    QAction *aboutAction;
    QAction *zoomInAction;//放大
    QAction *zoomOutAction;//缩小

    QAction *undoAction;//撤消
    QAction *redoAction;//重做

    QAction *p打开书集Action;
    QAction *p新建书集Action;
    QAction *p增加书本Action;
    QAction *p选择书本Action;
    QAction *p删除书本Action;
    QAction *p删除当前词条Action;
    QAction *p添加词条Action;
    QAction *p修改词条Action;
    QAction *p修改标签Action;
    QAction *p修改备注Action;

    QAction *p插入链接Action;
    QAction *p插入图片Action;
    QAction *p插入音频Action;
   // QAction *p插入视频Action;
   // QAction *p插入文件Action;

   QAction *p插入表格Action;
   QAction *p表格增加一行Action;
   QAction *p表格增加一列Action;
   QAction *p表格删除当前行Action;
   QAction *p表格删除当前列Action;
   QAction *p表格返回上一步Action;

   QAction *p盘符替换Action;


private:
    QToolBar *fontToolBar;                          //字体工具栏
    QToolBar *fileTool;                          	//工具栏
    QToolBar *zoomTool;
    QToolBar *doToolBar;
    QToolBar *taskToolBar; //任务提交和取消工具条

    QLabel *p字体Label;                             //字体设置项
    QFontComboBox *p字体下拉框;
    QLabel *p字号Label;
    QComboBox *p字号下拉框;
    QToolButton *p粗体Btn;
    QToolButton *p斜体Btn;
    QToolButton *p下划线Btn;
    QToolButton *p颜色Btn;


    QToolBar *listToolBar;                          //排序工具栏
    QLabel *listLabel;                              //排序设置项
    QComboBox *p排序类型框;
    QActionGroup *actGrp;
    QAction *leftAction;
    QAction *rightAction;
    QAction *centerAction;
    QAction *justifyAction;
    QAction *p任务提交Action;
    QAction *p任务取消Action;


};

#endif // MW_H
